Desktop virtualization technologies have become widely used in recent years. In a desktop virtualization environment, physical computing devices often provide for the use of multiple physical monitors, sometimes referred to as a “multi-monitor” mode. In the multi-monitor mode, a client device usually includes a desktop composition redirection (DCR), which can be a software application or a hardware device that supports one or more graphic processing units (GPUs) for driving the monitors. Typically, a single GPU can drive up to two monitors. When the client device supports more than two monitors, additional GPUs can be physically included in a peripheral component interconnect (PCI) card that is electrically coupled to the client device. The GPUs included in the PCI card are sometimes also referred to as “heads.”
A PCI card can include the same type of GPUs or different types of GPUs. GPUs of difference types can correspond to different models provided by a same GPU vendor or can be provided by different GPU vendors. For example, different types of GPUs can be provided by Nvidia®, AMD®, Intel®, or ARM®. Different types of GPUs can have different capabilities and performances. When a client device includes multiple GPUs and operates in a multi-monitor mode, the DCR typically uses only one particular GPU for rendering graphics. The particular GPU for rendering graphics is usually the one having the highest capabilities. After the particular GPU renders the graphics, the DCR provides the rendering results to a monitor for displaying the graphics. The displaying monitor can be a monitor that is driven by a GPU that is different from the rendering GPU. As a result, the graphic processing and displaying performances are often negatively impacted because different GPUs can have different capabilities and performances.
In a virtualization environment, while theoretically the DCR can use the GPU that drives the displaying monitor to render graphics, compatibility issues can arise. For example, in a virtualization environment, the DCR of a client device receives DCR command data from a virtual delivery agent (VDA) of a server for operating the GPUs and monitors of the client device. To provide the DCR command data for driving multiple monitors associated with the client device, a Windows™ display driver model (WDDM) adapter of the VDA generates one or more virtual monitors on the VDA. But due to operating system limitations, a limited number of virtual monitors, such as eight virtual monitors, can usually be generated by a single WDDM adapter of the VDA. Moreover, the rendering capabilities of the GPUs of the client device are limited by the single WDDM adapter of the VDA. Further, because the rendering context is associated with the single WDDM adapter, duplicating the DCR command data for operating different types of GPUs and monitors of the client device is generally unfeasible or prone to compatibility issues.